package com.jxdinfo.hussar.example.qjgl.ryqjsjmx.service;

import com.jxdinfo.hussar.example.qjgl.ryqjsjmx.model.Ryqjsjmx;
import com.jxdinfo.hussar.support.mp.base.service.HussarService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jxdinfo.hussar.example.qjgl.ryqjsjmx.dto.RyqjsjmxRyqjsjmxdataset1;
import com.jxdinfo.hussar.workflow.engine.response.BpmResponseResult;
import com.alibaba.fastjson.JSONObject;
import com.jxdinfo.hussar.example.qjgl.ryqjsjmx.dto.RyqjsjmxDto;
import com.jxdinfo.hussar.example.qjgl.ryqjsjmx.model.Ryqjsjmx;
import com.jxdinfo.hussar.example.qjgl.ryqjsjmx.vo.RyqjsjmxPageVO;
import com.jxdinfo.hussar.platform.core.base.apiresult.ApiResponse;

/**
 * 人员请假数据模型服务类
 */
public interface RyqjsjmxService extends HussarService<Ryqjsjmx> {

    /**
     * 人员请假数据模型表单查询
     */
    ApiResponse<Ryqjsjmx> formQuery(String id);

    /**
     * 人员请假数据模型保存流程表单
     */
    ApiResponse<String> flowFormSaveStart(RyqjsjmxDto ryqjsjmxDto);

    /**
     * 启动流程实例
     */
    ApiResponse<String> startSaveProcessInstance(String processDefinitionKey, String businessKey);

    /**
     * 人员请假数据模型表格查询（带分页）
     *
     * @param page 分页对象
     * @return 查询结果
     */
    ApiResponse<RyqjsjmxPageVO> hussarQueryPage(Page<Ryqjsjmx> page);

    /**
     * 人员请假数据模型表格查询（带分页）
     *
     * @param page 分页对象
     * @return 查询结果
     */
    ApiResponse<RyqjsjmxPageVO> hussarQueryPage_order_custom(Page<Ryqjsjmx> page);

    /**
     * 提交流程表单时操作业务表数据
     */
    String formsubmitreject(RyqjsjmxDto ryqjsjmxDto, String businessKey);

    /**
     * 人员请假数据模型提交流程表单(优先提交至驳回节点)
     */
    ApiResponse<String> flowFormSubmitReject(RyqjsjmxDto ryqjsjmxDto);

    /**
     * 人员请假数据模型表格查询（带分页）
     *
     * @param ryqjsjmxdataset1 查询对象
     * @return 查询结果
     */
    ApiResponse<RyqjsjmxPageVO> hussarQueryryqjsjmxCondition_1Page(RyqjsjmxRyqjsjmxdataset1 ryqjsjmxdataset1);

    /**
     * 人员请假数据模型表格查询（带分页）
     *
     * @param ryqjsjmxdataset1 查询对象
     * @return 查询结果
     */
    ApiResponse<RyqjsjmxPageVO> hussarQueryryqjsjmxCondition_1Page_order_custom(RyqjsjmxRyqjsjmxdataset1 ryqjsjmxdataset1);

    /**
     * 人员请假数据模型流程表格修改
     */
    ApiResponse<JSONObject> flowTableUpdate(RyqjsjmxDto ryqjsjmxDto);

    /**
     * 人员请假数据模型流程列表物理删除
     */
    ApiResponse<String> flowTableDelete(String id);

    /**
     * 人员请假数据模型流程列表物理删除(仅删除未启动流程和节点处于第一节点的流程)
     */
    ApiResponse<String> flowTableDeleteUnStart(String id);

    /**
     * 获取流程状态
     */
    BpmResponseResult getValidateResult(String id);

    /**
     * 删除流程实例
     */
    ApiResponse<String> deleteProcessInstance(String id);
}
